import { URL, Toast, ajax, getUser } from '../../utils/index'
var innerAudioContext = wx.createInnerAudioContext();
Component({
  properties: {
    src: {
      type: String,
      value: ''
    },
    customStyle: {
      type: String,
      value: ''
    },
    voiceStyle: {
      type: String,
      value: ''
    },
    voiceBut: {
      type: String,
      value: ''
    },
    event: {
      type: Boolean,
      value: false
    },
    headImage: {
      type: String,
      value: ''
    }
  },
  data: {
    status: false,
    filePath: null,
    loading: false,
    head: ''
  },
  /**
   * 函数
   */
  methods: {
    audioClick() {
      if (this.data.event) return this.triggerEvent("audioEvent")
      this.data.status ? (innerAudioContext.stop()) : (innerAudioContext.play(),this.setStatus(true))
    },
    setStatus() {
      this.setData({
        status: !this.data.status
      })
    },
    audioChange() {
      innerAudioContext.onPlay(() => console.log('开始播放音频事件=============================>'))
      innerAudioContext.onPause(() => (this.setStatus(false), console.log('音频暂停事件=============================>')))
      innerAudioContext.onStop(() => (this.setStatus(false), console.log('音频停止事件=============================>')))
      innerAudioContext.onError((e) => {
        Toast.fail(e.ERRMSG)
        this.setStatus(false), console.log('音频错误事件==========>' + JSON.stringify(e))
      })
      innerAudioContext.onCanplay(() => (this.setLoading(false),console.log('音频进入可以播放状态=============================>')))
      innerAudioContext.onEnded(() => (this.setStatus(false), console.log('音频自然播放至结束事件=============================>')))
    },
    setStatus(e) {
      this.setData({
        status: e
      })
    },
    setLoading(e) {
      this.setData({
        loading: e //!this.data.loading
      })
    },
    downloadAudio(src) {
      this.setLoading(true)
      this.audioChange(),innerAudioContext.src = src//res.tempFilePath
      /* wx.downloadFile({
         url: src,
         success: (res) => (res.statusCode === 200 ? (this.audioChange(),innerAudioContext.src = res.tempFilePath) : (ajax.toast.fail('语音加载失败'),this.setLoading(false)))
       })*/
    },
    cancelClick() {
      this.triggerEvent("cancel")
    }
  },
  // 属性监听
  observers: {
    src (value) {
      if (!value || this.data.event) return
      innerAudioContext.destroy()
      innerAudioContext = wx.createInnerAudioContext();
      this.downloadAudio(value)
    }
  },
  // 组件生命周期函数，在组件实例进入页面节点树时执行，注意此时不能调用setData
  created: function () { },
  // 组件生命周期函数，在组件实例进入页面节点树时执行。
  attached: function () { },
  // 在组件布局完成后执行，此时可以获取节点信息
  ready: function () {
    if (!this.data.headImage) {
      getUser().then(res => {
        this.setData({
          head: res.data.data.head
        })
      })
    } else {
      this.setData({
        head: this.data.headImage
      })
    }
  },
  // 在组件实例被移动到节点树另一个位置时执行
  moved: function () { },
  // 在组件实例被从页面节点树移除时执行
  detached: function () { }
});